package com.shenhaofeng.rxbus;


/**
 * 事件载体,事件总线的事件和数据必须封装为Event对象
 * Created by Administrator on 2016/9/1.
 */
public class Event<D> {

    //用与区分事件
    private String flag;

    //用于
    private D data;


    protected Event(String flag, D data) {
        this.flag = flag;
        this.data = data;
    }


    /**
     * 获取标记的事件类型
     * @return
     */
    public String getFlag() {
        return flag;
    }


    /**
     * 获取传递的数据
     * @return
     */
    public D getData() {
        return data;
    }


    /**
     * 获取一个Event对象
     * @param flag
     * @param data
     * @param <D>
     * @return
     */
    public static <D> Event<D> obtain(String flag, D data) {
        return new Event<>(flag, data);
    }


    /**
     * 获取一个Event对象
     * @param flag
     * @param <D>
     * @return
     */
    public static <D> Event<D> obtain(String flag) {
        return new Event<>(flag, null);
    }
}
